<?php

/**
 * Persona form.
 *
 * @package    sibi-salud
 * @subpackage form
 * @author     SIBI <sibiud@gmail.com>
 */
class PersonaForm extends BasePersonaForm
{
  public function configure()
  {
//    Validar la identificacion
    $this->validatorIdentification();
//    Validar los nombre
    $this->validatorSchema['nombres'] = new sfValidatorString(array(),array( 'required' => 'Los nombres son necesarios.' ));
//    Validar los apellidos
    $this->validatorSchema['apellidos'] = new sfValidatorString(array(),array( 'required' => 'Los apellidos son necesarios.' ));

//    Configurar fecha de nacimiento
    $this->configureDate();
//    Validar fecha de nacimiento
    $this->validatorBirth();

//    Union de los formulaios
    $this->mergeRelation('PersonaLocalizacion');

//    Establecer etiquetas para los widgets
    $this->setLabels();
//    Eliminar la fecha de creacion y de acualizacion en los formularios
    unset (
      $this['created_at'], $this['updated_at']
    );
  }

  public function validatorIdentification()
  {
    $this->validatorSchema['identificacion'] = new sfValidatorAnd(
      array(
        new sfValidatorString(
          array('max_length' => 20),
          array( 'max_length' => 'La identificaci&oacute;n "%value%" es demasiado largo. Su longitud debe ser m&aacute;ximo de %max_length% car&aacute;cteres.' )
        ),
        new sfValidatorNumber()
      ),array(),array(
        'required' => 'La identificaci&oacute;n es necesaria.',
        'invalid' => 'La identificaci&oacute;n no es v&aacute;lida.',
      )
    );
  }

  public function configureDate()
  {
    $years = range(1920,2010);
    $this->widgetSchema['fecha_nacimiento'] = new sfWidgetFormI18nDate(array(
        'culture'  => 'es',
        'format'   => '%day% - %month% - %year%',
        'years'    => array_combine($years, $years)
        ));
  }

  public function validatorBirth()
  {
    $this->validatorSchema['fecha_nacimiento'] = new sfValidatorAnd(array(
        $this->validatorSchema['fecha_nacimiento'],
        new sfValidatorDate()
        ),array(),array(
            'required' => 'La fecha de nacimiento es necesaria.',
            'invalid' => 'La fecha de nacimiento no es v&aacute;lida.'
        )
    );
  }

  public function setLabels()
  {
    $this->widgetSchema->setLabels(
      array(
        'documento_id' => 'Tipo de documento *',
        'identificacion' => 'N&uacute;mero de identificaci&oacute;n *',
        'nombres' => 'Nombres *',
        'apellidos' => 'Apellidos *',
        'fecha_nacimiento' => 'Fecha de nacimiento'
      )
    );
  }

}